/**
 * @author 木人心
 * @version 1.0.0
 */
// region TODO 根据参数获取一组整数数据
// 如果$proportion 为 1,返回一个数组如:(12, 14, 16,18),否则
// 会返回一个map如:(1: 100, 2: 200)
// @param $val > 初始值(包含)
// @param $end > 结束值(包含)
// @param $step > 步长
// @param $proportion > 比例
@function range-number($val, $end, $step: 1, $proportion: 1) {
  $arr: ();
  @while $val <= $end {
    @if $proportion == 1{
      $arr: append($arr, $val);
    } @else {
      $arr: map-merge($arr, ($val: $val * $proportion));
    }
    $val: $val + $step;
  }
  @return $arr;
}
// endregion

// region TODO 根据参数生成带有各个方向的样式
$directions: ('': '', 't': '-top', 'r': '-right', 'b': '-bottom', 'l': '-left');
$direction-extend: ('y': ('t', 'b'), 'x': ('l', 'r'));
// 例如
// .mt-32 {
//    margin-top: 32px
// }
// .${$generate.$key}#{$direction.$key}-#{$key} {
//    ${$generate.$value}#{$direction.$value}: $value + #{$unit}
// }
// @param $key > 类名称的后缀（一般是属性值）
// @param $value > 属性值
// @param $unit > 属性值单位
// @param $generate > 对哪些属性生成
// @param $generate.$key > 类名称前缀
// @param $generate.$value > 属性名
@mixin mixin-margin($key, $value, $unit: null, $generate: ()) {
  @each $abridge, $direction in $directions {
    @each $prefix, $attr-name in $generate {
      .#{$prefix}#{$abridge}-#{$key} {
        #{$attr-name}#{$direction}: $value + $unit!important;
      }
    }
  }
  @each $abridge, $item in $direction-extend {
    @each $prefix, $attr-name in $generate {
      .#{$prefix}#{$abridge}-#{$key} {
        @each $extend-prefix in $item {
          @extend .#{$prefix}#{$extend-prefix}-#{$key}
        }
      }
    }
  }
}
// endregion
